// pages/store/store.js

// 使用场景，一个在store用，一个在页面中使用
// 【页面使用时调用的方法】
import { createStoreBindings } from 'mobx-miniprogram-bindings'
import { store } from '../../store/store'



Page({

  /**
   * 页面的初始数据
   */
  data: {

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 调用createStoreBindings方法
    // 参数1： 绑定给谁：当前页面this
    // 参数2： 对象{ store(容器)， fields(数据)， actions(修改方法)
    // 把store中的数据【映射】到【页面】中
    this.storeBindings = createStoreBindings(this, {
      // 映射容器的实例
      store,
      // 映射容器中的属性（数据字段）
      fields: ['numA', 'numB', 'sum'],
      // 映射容器中的方法
      actions: ['updateNum1']
    })

    // 【结论】: 无论是在页面中使用仓库中的东西, 还是在组件中使用仓库中的东西, 在绑定成功之后, 就可以像使用自身数据和调用自身方法一样的对仓库的数据和方法进行操作
  },

  // 页面的js文件中的 tap事件处理函数
  btn(e) {
    // console.log(e);
    // 使用仓库中的方法，并传递数据
    this.updateNum1(100)
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    // 使用this.storeBindings，得到调用createStoreBindings方法的返回值
    //调用destroyStoreBindings 方法，进行清理销毁的工作
    this.storeBindings.destoryStoreBindings()
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})